package com.example.Utils;

import cn.hutool.core.bean.BeanUtil;

import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.concurrent.TimeUnit;

// public class LoginInterceptor implements HandlerInterceptor {
//     private StringRedisTemplate stringRedisTemplate;
//
//     public LoginInterceptor(StringRedisTemplate stringRedisTemplate) {
//         this.stringRedisTemplate = stringRedisTemplate;
//     }
//
//     @Override
//     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//         //获取token
//         String token = request.getHeader("authorization");
//         //token不存在，拦截
//         if (token == null){
//             response.setStatus(401);
//             return false;
//         }
//         //redis获取用户信息
//         Map<Object, Object> map = stringRedisTemplate.opsForHash().entries(token);
//         //用户是否存在
//         //不存在，拦截，状态码：401 未授权
//         if (map.isEmpty()){
//             response.setStatus(401);
//             return false;
//         }
//         User userDTO = BeanUtil.fillBeanWithMap(map, new User(), false);
//         //存在，把用户放到ThreadLocal中
//         UserHolder.saveUser(userDTO);
//         //刷新token有效期
//         stringRedisTemplate.expire(token,10, TimeUnit.MINUTES);
//         //放行
//         return true;
//     }
//
//     @Override
//     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
//         //移除用户
//         UserHolder.removeUser();
//     }
//
// }
